/**
字符串重排:
给你一个原始字符串，根据该字符串内每个字符出现的次数，按照ASCII码递增顺序重新调整输出。
(1).原始字符串中仅可能出现“数字”和“字母”；
(2).请注意区分字母大小写。
输入描述:

输出描述:
efghegheh
*/

#include<bits/stdc++.h>

using namespace std;

int main(){
//    //输出ASCII码
//    for(int i = 0; i < 256; i++)
//        cout << (char)i;
//    cout << endl;
    string str;
    cin >> str;//获取输入字符串
    int num[256];//存储每个ASCII码在字符串中出现的次数
    for(int i = 0; i < 256; i++)
        num[i] = 0;
    //统计0--9、A--Z、a--z出现次数
    for(int i = 0; i < str.length(); i++)
        num[str[i]]++;
    //按照ASCII码顺序输出
    int i = 0;
    while(i < str.length()){
        for(int j = '0'; j <= '9'; j++){
            if(num[j] > 0){
                cout << char(j);
                num[j]--;
                i++;
            }
        }
        for(int j = 'A'; j <= 'Z'; j++){
            if(num[j] > 0){
                cout << char(j);
                num[j]--;
                i++;
            }
        }
        for(int j = 'a'; j <= 'z'; j++){
            if(num[j] > 0){
                cout << char(j);
                num[j]--;
                i++;
            }
        }
    }
    return 0;
}
